{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import json\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "# Read a jsonl file\n",
    "def read_jsonl(file_path):\n",
    "    data = []\n",
    "    with open(file_path, \"r\") as file:\n",
    "        for line in file:\n",
    "            data.append(json.loads(line))\n",
    "    return data\n",
    "\n",
    "\n",
    "def replace_none_with_zero(data):\n",
    "    for i in range(len(data)):\n",
    "        if data[i] is None:\n",
    "            data[i] = 0\n",
    "    return np.array(data, dtype=float)\n",
    "\n",
    "\n",
    "def get_eval_metrics(file_path):\n",
    "    data = read_jsonl(file_path)\n",
    "\n",
    "    faithfulness_correct = []\n",
    "    relevance_correct = []\n",
    "    faithfulness = []\n",
    "    relevance = []\n",
    "    for res in data:\n",
    "        faithfulness_correct.append(res[\"faithfulness_correct\"])\n",
    "        relevance_correct.append(res[\"relevance_correct\"])\n",
    "        faithfulness.append(res[\"faithfulness\"])\n",
    "        relevance.append(res[\"relevance\"])\n",
    "\n",
    "    faithfulness_correct = replace_none_with_zero(faithfulness_correct)\n",
    "    relevance_correct = replace_none_with_zero(relevance_correct)\n",
    "    faithfulness = replace_none_with_zero(faithfulness)\n",
    "    relevance = replace_none_with_zero(relevance)\n",
    "\n",
    "    # Calculate the average scores\n",
    "    avg_faithfulness_correct = (sum(faithfulness_correct) / len(faithfulness_correct)) * 100\n",
    "    avg_relevance_correct = (sum(relevance_correct) / len(relevance_correct)) * 100\n",
    "    avg_faithfulness = sum(faithfulness) / len(faithfulness)\n",
    "    avg_relevance = sum(relevance) / len(relevance)\n",
    "    return [\n",
    "        avg_faithfulness_correct.item(),\n",
    "        avg_relevance_correct.item(),\n",
    "        avg_faithfulness.item(),\n",
    "        avg_relevance.item(),\n",
    "    ]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAiXlJREFUeJzt3QeYE9X7//176b1KVaqgFEERkaaoVFEUBLELCnaKgAqiIk3BhmBB/IIIWLCggKACIioqvSqK0pVeVDpShDzX5/yeyT+bze5mlx22vV/XFdhMJpOZyczk3HPuc05MIBAIGAAAAAAASHFZUn6RAAAAAABACLoBAAAAAPAJQTcAAAAAAD4h6AYAAAAAwCcE3QAAAAAA+ISgGwAAAAAAnxB0AwAAAADgE4JuAAAAAAB8QtANAAAAAIBPCLqB/19MTIwNGDAgtVcjTTt16pRdcMEF9uyzz1pG991337ljQv+nVeXLl7e77ror+HzmzJmWL18+27Nnj2VU4dss69ats+bNm1vBggXddzZ16lTLCNuF9G3Lli2WK1cumzdvnq+fwzmBzPY7/O6771qVKlUse/bsVqhQIV/X4dChQ3bPPfdYyZIl3br06NHD/vjjD/f3+PHj7UzTOaFzw09vvvmmlS1b1o4dO+br52Q2BN0I2rBhg91///1WsWJFV1AoUKCANWzY0F555RX7999/U3v1EGLy5Mnugv/WW2/FO8/s2bPdPK+++mrwPTfffLP7fvPkyWPnn3++PfLII7Zv376oP/eDDz5wBcmuXbsGp+lHR5/jPbJly2Znn322+2HYtm3baW4pkuLqq6+2SpUq2dChQy2tmD59ul1xxRVWvHhxd9zp+LvpppvcDYKU0rFjR1u1apW7GaTC2CWXXGKZwZdffsmNwii8/PLL7tr09ddfxzvPmDFj3DzTpk1zz3X9Cr2ueQ8V9KM1aNAgq1u3rvsdDcU54Z/Mek6kVPkt/Pc8voffQV9Cfv/9d3d+nnvuue68HT16tK+fN2TIELdfHnzwQXcu3Xnnnea37du3u+N45cqVlhq0f48fP27/+9//UuXzM6psqb0CSBu++OILa9++veXMmdM6dOjgajN1wv3444/22GOP2a+//ur7hS216YdJAWN6cO2117oajIkTJ7o7sJHotaxZs9ott9zint93331WunRpu+OOO9wdTBXIXn/9dVdIWb58ueXOnTvRz33xxRfd8vTZkQqYFSpUsKNHj9rChQvdj5SOn19++cUVAnBmqOD16KOP2sCBAy1//vypui4vvfSSu34owOjbt68LMNavX++Cnw8//NDdJEiJ83bBggX25JNPxroZlN6sWbPGsmRJ2n1wnbsjR47MlEFGUuiapeNQ18SmTZtGnEevFS1a1Fq2bBmcpt/D8Bubka59kSjbZMKECe4RinMiepwTZ7781qhRIxdYhlIZ49JLL3VlCI8yqlKLar2VdacbCrrJ7LdvvvnG6tWrZ/379w9OU02330G3fsN1c+Oiiy6K9ZpuNGj7/aQym27c6YZlt27d3I0WnL70EWHAV5s2bXKFknLlyrmLS6lSpYKvdenSxRUIdFHPiHTh0o+TLjDpKTDUj+uNN95o48aNcxdnBdOhFPhOmTLFmjVr5mpT5JNPPrErr7wy1ny1a9d2F9b3338/3uDds2LFCvvpp59s2LBhEV9XYdWrTdGyzjrrLHv++eddzZFqcc6UQCDgtj+amwgZUbt27dyP5KRJk6xTp06pth7//fefDR482B2DX331VZzXd+/enSKf46XS+51ieCbOafhD18errrrKZfuMGjUqzr5WRs7333/vggqlq3p0E1Y3KZPjvffec++/7rrrgtM4J5Ims58Tqm1UcJdQE6eULr+pplyPUA888ICbltxzIaV550lyju/klA/0edWqVbO0IvQa5SeV21544QX79ttvrXHjxmfkMzM60svhTiq1WRk7dmysC7ZHdxIffvjhOAUHpfboR1F34p544ok4bT80vVWrVu4HQ8GYLnI1atQI/oCoAKTnCnYV/CmoC//B0d3UjRs3WosWLSxv3ryu8KQaVV04w2sPGjRo4Goq9DlanoLMcLpbpzv/CjKrV6/u1t9L6Qtv033w4EHXdkfbofkUvKqwpFrhUApu9Hn6XAWa+mEKT6v2tkXT27Rp4/4uVqyYq5E8efJkrHl37Njh0qdOnDiRwLdm7nN000C1I+H0I7t//367/fbbg9PCA2654YYb3P+//fabJUZtAnPkyOHuhEfj8ssvD6a9hdK26YZBkSJF3HevY8NL6QxPcVNBWDW3+l6VLqe7+Hv37o14nM2aNSt4nHkpUTp2VAOgz1KNku5WRyqAbN261X0vOsb0Pffs2TNiW6b42hhq34bvX/2w63g677zz3Hbq3Grbtm2s/aHvb8SIEe5Y1DwlSpRw2xu+jTren3nmGTvnnHPcdiiAUO1FJFr/mjVr2meffWYJ0Tmjffznn3/GeU01cPquvfVQ+1AF82rTpvXUeqigp2MsPn/99ZcdOHAgTmpt6HqG0v5WTYKuNzrfypQpY717906wTZn2rwqbohqdaNIedQ527tzZXUv0OcrOUNqgbr55ojluvLaGH3/8sUvh1T7RvmnSpIkr6IaKZv+FH1s6/1XTUblyZfcenQOXXXaZazYimlc1ehKa9pnUY8s7f1QrptoszasC9jvvvBNn36kpis4N75qo7dA5qe9avyE6f0J/K0LPL2XdxNfsQduqfX333XfHeU3HkNZJ10rPa6+95rZL303hwoXdea+a6sSul9rfkc5/XUO1v0Kvlx5dn7UOSaXrpVLLQ2sEOSf+H86JhM+J1C6/nY7EvqeklAXCaX29GmeVoRLriyeh8oG+O5XxdF5pX2hfqaLAq0X2jmfd2NCx7h1PCdVyR7tNCR03+tw6deq4+XRN9D7Xaz8eqU334cOHXXNBb1vUfFC/8eFlZa8MrOuTMiI0r86HSE1bVK7VdiRWlkASBJDpnX322YGKFStGPX/Hjh11FgduvPHGwMiRIwMdOnRwz9u0aRNrvnLlygXOP//8QKlSpQIDBgwIDB8+3H1Wvnz5Au+9916gbNmygeeee849ChYsGKhUqVLg5MmTsT4nV65cgcqVKwfuvPPOwOuvvx5o1aqV+6x+/frF+qxzzjkn8NBDD7l5Xn755cCll17q5vv8889jzadpVatWDRQrViwwcOBAt/4rVqwIvta/f//gvLfddlsgR44cgV69egXeeuutwPPPPx+47rrr3Lp7xo0b595Xp04dt32PP/54IHfu3IHy5csH9u7dG2dbqlevHujUqVNg1KhRgXbt2rn3vvHGGxH376ZNmxL8HrSvtN21a9eO81rbtm0DefLkCRw8eDDBZaxdu9Z91pAhQwKJadq0aeDiiy+OM93bB0uWLIk1Xd+FpmtbPb/88ov7rqtVq+b2p+Zp1KhRICYmJjB58uQ4y6xRo0bg8ssvD7z66quBLl26BLJkyeLmP3XqVKzjTMdO4cKF3f5/8803A99++21g586dgRIlSgTy588fePLJJ91xceGFF7plhH7WkSNHAuedd577fnr37h0YMWKE26c1a9Z066BlhX6Wvp9wV1xxhXt4/vvvv0CTJk3c+2+55Ra3nUOHDg00btw4MHXq1OB899xzTyBbtmyBe++91613nz59Annz5nXH0/Hjx4PzPfXUU25Z11xzjVuWjqHSpUsHzjrrrIjro+XqtYT8+eefbr+/8MILcV7T9eDaa691fx87dixQoUIF93nPPPOMOxd07mgd//jjjwSPT50L2pd///13guuieZs3b+6O2R49egT+97//Bbp27er2TevWrWPNG/od/PTTT+6807659dZbA++++25gypQp8X7Otm3b3HZ4n6N9rmuJrgne+RrtcaPjQp9bq1Ytt41aD13ntGxdfzzR7r/wY+uJJ55w34+OjTFjxgSGDRvmtlHXS5k/f36gWbNmbh203d4jqceWd53WNuszdXzpPNdn63z16FpywQUXBLJmzeqWqfN68ODBbnneNfT22293y9HxH0rHmJanYy4+OqYLFSrk9leoCRMmxLq+jB49Ovj7o+PklVdeCXTu3DnQvXv3QEL279/vznFdd8Npe7UfQq8r+i60zvo+9Xm6vug3JrFrqmj/6tjXb0cozon/wzkR3TmhbQ/9XTmT5bdQ2keRfmfik9j3lJSygHdMeb/DOpZvuOGGYNlC36+O+fjEVz44fPiw+40vWrSoW19N177Q5z/88MPB417L12/pRRddFDyeDh065MpnWgeVVZK6TYkdN/rcQYMGueXfd999wc/dsGFD8DvUdnl03VLZQp+jY1yfq7Kq3q9zOpSm6dxVuVyfqfKOjh+do3/99VfEcl+kMiaSh6A7k1NBRCdh+I94fFauXOnm14kd6tFHH3XTv/nmm+A0XRQ0TT+EnlmzZrlpKniE/tioQBEe4Hg/Dt26dYt1cVEwoGB4z549sQKnUPoB1UVNF6JQWp4KCr/++mucbQsPunXxVKAXH31G8eLF3ef8+++/wekK9LWsp59+Os626EIayiucJCfolscee8zNu2bNmjiFS/3IJUaFVV34FXwnRgF+pAKrFyB//fXX7jvZsmVL4JNPPnE3NnLmzOmeexSIKpA+evRorO+0QYMG7uZK+DK1b0ILQyqoaPpnn30W5zibOXNmrPXSj42m//DDD7F+7FTY000R7waPfnQ038cffxycTz/I+qFObtD99ttvu/eqcBrOK9hrvTTP+++/H+t1bUfo9N27d7vjXcd9aFCggoLmi7Q+uomi13bt2hVISP369eMcf4sXL3bvfeedd9xzFQL0fNKkSYGk0jmg96rQ1rJly8Czzz4bWLZsWZz5VKDQeRn6XYkKQnr/vHnz4v0OvMLPiy++mOj6qFClzwm/QSTevo32uPEKgwpOQgNFBYGavmrVqiTtv/DtUsHIu/ERH12fIt07j/bY8j5X077//vvgNB1zOncfeeSRON9laOExfN951/cZM2bEel2F28SCB++906dPjzVdN5pCgwr9VunmZXK0b9/eXRt1jfT8/vvv7nP79u0ba14V0BWUffTRR4EPPvggeF1u2LBh4MSJEwl+zvr16928r732WpzXOCc4J6I9JxILuv0sv51O0B3N9xRtWSA86BaV0zQttAwYn/jKBwo4tV3hZR+d9yoTbd68OdYywrcnUtAd7TZFc9zofAxfvic86NaNfM2rG1ihdGNFgbiuRx7Np/JE6DTdtIjveqWgX+V1pAzSyzM5L20u2g6X1EmJ9OrVK9Z0pbVIeLqZ2sHUr18/+FzpdqL2IerMK3y6UtjChXYE46XGKO0ttCfa0PY5ShVTiprSm8NTwUUd2ETTPkfthRYtWuTaTEeydOlS19bnoYceitUeXJ2cqYfbSGmMahsVSusYvs1KIdK1MZreQb02VqGplZ9++qlLbY6UKhlK71FKmr47pYEl5u+//3apnPFRB0VK91J6k9KrlFantCqlTck///zj2pypnZBS95VGpYeWq+YDSjcMT8sPb2OplEe1k/SOQ4/SIbWMUJpHqYFKa/Mo1VPLVHrY6tWrg/MpLU/r7FH6ZGinMUml70BNDdS2OpyX7qhmCeqUSU0WvH2hh1K6tJ5qRyU6znW8h3dmorS4+Hjfk5aXEPVmv2zZslgp7x999JFLOWvdunWsjqOUnnfkyJEk7QelGOo4q1Wrlnu/OnbS9l188cWxmjRoX1StWtWdN6H7wmtH5u2L06GUQaXUqY1tpJ6cvX0b7XHjUfqfUvHDm1V453Vy95+uP2pCoPMiqaI9tjy6HnrrLTqPlZ4Yem3SMX3hhRcGm6RE2ne6BihFWc13POpI8eeff060Pai+a50zOv5Cr+VKSdVxGrpflJq7ZMmSJO8XrYOujWra5PGuneHXS6X9Pvfcc+56pbRnXZeVMq3hvyI1XQqla5pEul5yTnBORDon9F2ErpceSvlWqnb4dK/pmd/lt+RK7HtKTlngdEQqH+h40PerczR03+r7UpMSNW1LiqRsUzTHTVLoe1VThe7du8f5XlWWnDFjRqzp2kY1L/CoOZqa70Uqf2v/qGPGpP72IzKC7kxOJ5roIhENtf9Ub6LhPUaqXZYutOHtQ0MD69AfWwVmkaaHt63SZ4V36qE2shLarubzzz93bcwU/KoNin4g1WFOpDanugBH21ZKP45aVxU41G4o9KLkbat+iMOpoBS+L7RuWq/wC1r4NieFLpZql6OhvDwq0KnwGv4jE+qHH35wbfg0T1LG3A5vHxRKbelUQFaB9JprrnE/OKEd4ahNn97fr18/tx9CH14brfCOhMJvBqhwpAA5vE1VpO9U+z/Sd6OCrPe697+O5/Afu0jvjZaCWL0/od7w9SOs41PtOMP3h9roefvCW8/wfaH54rsJ4n1Pif2Aq42mzjEv0NH7VBhRp3jetUH7VoU09eLsHVf6rhNqzx3q1ltvdcebjnN1HnXbbbe5/htU0FcA5O0LFdLC94N3rielgykVmHbu3BnroZsW6lxKhVSdLwmJ9riJ7xrnfSfeeZ3c/ae+K9TuT/tAfV+ofa4K6tGI9tiKbxsiXZt0TCe273QsKXhVIOcV0hRs6NqnYy0hOlfUxlftB732pQqOFWCEBt19+vRx1wFdk3VOqLOoaMfB1nGt34fQm5S6dqoArHaNiVEbTG1jQkOPRXO95JzgnAg/JzZv3hxnvdTXwPz58+NM9453v8tvyZXY95ScskBC9P2FHtteR4IJlQ90PKgdc/jne6MbJLVTw6RsUzTHTVLoe9ONnfCbL9GenwmVRaMtSyA69F6eyemirZNVwWVSRHsC6u5bUqYnFNTFR4WX66+/3nXw9cYbb7igTLWj6tk7Uuc60fZaqTuWuhOqXsBVMNJwWepkQwXB0GFlohXfNp8u3S1//PHHXc27apV1x16dw8QX8KkHcu0vXfQVIEc7TJo6Q0noBoEKwV5tiTolU62ICpMa9kWFZK9zEnWIFN8NgeQO/3GmeiqP77hXoTap36/2hwqAoTUgocJv0CSF9z2pQJsQnfs6xtXxkTrT0VBvKvzpOA+lHuvVeYsCIp0LuqOumkDN72UyRHOtUS2THjo/NZSSMkmUeaJ9ocKZhieJJPwmXUI0jnx4IUvnhFcASWnRXMuSs/90PVPhzHuPApThw4fbm2++mehIA0k9tlLyeqzOgHStVJCh4FLXYHVkFM1QW6pRVidHqpnRNUTHpW5gKij26HvUNUU3WlVoVq2RrvtPP/20q0VOiI47Xdc15M6uXbvcsa7Ct26wRnud0XVQtVoJ0TyS2A1VzgnOidDAN7yjMb1HQWT4iCHe+eB3+S25EvueUrosoA7DQs99dSQYemM+UvlA66DzTh0TRuLd3IqWn+WblJaUY1vXMGX+ZdbRYFIaQTfcxV9jOGpcz9BU8Eh0MdPFRQWV0B9sFWB0Z9PrNTWl6LNUuxx6AVy7dq3730u/VqFLd42VqhZas6qg+3QpgFf6uB66S6kUQNUMK+j2tlUFwPDhFDQtpfdFfPQjrt6m9UOuz1QAGF9quX4INQ6sCh9KSUrKWJsq/KoXz2h4vbKql22NBa6bAl7GggqX8Y2VG07HmZYRekdbvburJj0x2hf6HiL1Luq97v2vQot+cEILI5Heq7vBOs7D6U5yaEaGUrdUeFYtXXzDe2ge1ZipJ+OEftC89dS+CP0M3c2Pr1Cv70kBdzSBu2oRdXxre1XjrR/Y0GGOPAoA9Hjqqadc7YvWW4Uo9aqeVLo5owBD36W3L3QzSL0cn26BMFLhVYVUFXBVSE2sgBrtcZNUydl/Xo/eeujYV2FWGTdegBHfvor22EoKLTOawr1u5il1WsGNgicFtuptPBraPl1zdRzqpp3SNZV+HU5NV3Tc6qEaW40KoOuyroOJDf2oa6P2uz5D54n2oa6h0fDSRhM7r1STpP0e7fVSOCcy9zmh4zb8d1HDzinrI6Hfy7Rafkvoe0pOWSCxmxqhTR+i+X713Wm9UuLzJSnbFM1xk5RzXt+bjm1dn0Jru0/3/BRdw/y6OZcZkV4Od6dPhRhdDHXxjRSovfLKK+5vL9jRsBuhvLvxas+c0hS0eRQY6bkubCqMeAGeLlChQ2/pLqfuKieXlhWe6qZAVXeVvdRHFZI0TYWE0OE2VEujtnnJ3RfRDhkWWsBTbaUKkfqRVo2Ghk8LpzvmzZs3d+llukGR1JpU/aDrhyLaoUU0hJZqv3WsKGVS+0rTVJPlFSxDhaeEiQoToftBTQY05Ek0mQY6VhcvXuwKI6HDamiZumHjtevXfGq3H9pOU2mAmi/Sj6VqYkKH0lGNm2qSQilNVoXz0GM3/G6yatx0nGn4lnDaRi+41w+4jncV0kLvRIefg6HUTjuxAljouuocUpqtUstViNP1wKP0U61PKBWUdRwldCxoH4bu+1BeGzMvZVX7Qu3dVAMZTu3J9L1Fyyu8hj50s0Trq9rT6dOnu6yQcN6+jfa4iVZy95/XLtijG2SqKQl9j/c9hd8IivbYSgodJwoClfmTWA3JnXfe6Wq4dIyq1jfazCDtE/WtoO/o3Xffdesamloeab+o7bC+E61DNNdMBV36HnWt1DVTtcrhNau6XkVK2dX+1OfoxmVCdL7q9yH8OOOc+D+cE9GfE+mx/JbY95ScskBiAW/osR3fkHzhx4OOZ5WFwulYCD8+E5OUbYrmuInvOI5E36uO7fDyhrILVDY+nWNN/SJFKk8ieajphgskVEuqwo3uaOmuoe7MKrDQ3WcVxL2xMnV3vGPHju7HVhcDFVj0Y6w79PrxDq2VTAkqLCiFUJ+pztZUMFFnH0qF9YJG/VDoR0MFIaUzq0Za7cN0kY+2vVc4FbhUEFMBUNusHw3dSVTnPV6qlwpWSsPVnVztB9WW6EdPP3AqiKj9X3Kotkb7U3cYo+lMzUsxV6c2Ch4j1QyJ9o+yBvQjrfFH9fBovFKlWiVEHWupwDJ37lwXvEdDbbnUbk2dEKkTOX0vuiOtAta9997rfiy1z/Tjp86R9EMUSsegbq7oB1I1LUoj1fuVHp8Y1a4rkNQPjlIXdefd26/KjlABT7Qe+rHSca9gVTVtKvCrxjecCjYKzrUvtU4q0KjwHtopiWhZGtNV7RZ1fuimiAqpOoZUq6x9qWNGzQCUEbBy5Uq3T3VMqRZC55yOIx1/3njumk8BsX5g1f5T50Kk9HEd/zru1dY12sKCzludQzruw4Mc1Taq80J9j8o4UWFE+0eBugoP8VGAoR9r9bWg/aV0WF0zdDNMTUJ0vVDtj1cgVSqxjhGlvarQpEKEbj5pujfG6ukaMmSIK/hq3+t80fVOBSTtb50PatcY7XETreTuPwUyKsR5Y6UqKNKxF9qxpF4TradSGrVMpWhHe2wlhc5lfb62o1OnTu6zlWatzhJ14zE0BVzXYV1nVKhU54fxZXtEouNPN5jUDlLXifBaFm2Lam51jOi6pRucOn/1OxBNh1IqhGr9dCx47U8j3aDUsalrujJ8RMegsoN0LHudDCZE8+harADTa3vLOfF/OCeSdk6kt/JbNN9TUssCKU3fnb4n/aZq/2hd9Ru9atUqt66quEmseVa4aLcpmuNG36vOPT3XdU1BuMrAkdqnKzNN352uN1pvvV/ntNL71eFqePkkWioPab2iud4hSinUCzoyAA2doDEDNQSIhhTQmJwaHkXDCIQOgaDhUjSmpoYLyZ49e6BMmTJuuJXQeeIbZkF02IUPxRVpiBMNi6AhHTQ2oTdeqca71HARoeN5y9ixY92QDBrSo0qVKm6YBW9YicQ+O9KQYRruRMNxaegL7Qeth/4OH1NbNKSMhv7SZxcpUsSNy7l169ZY83jbEi7SOiZlyDDPP//84z5f71u9enW82xffI7GhS0KHOdEwY9GM0y36ns4991z38MYp1fepYWpKlizpjh+NM6rx1zXMWPgy586d64as0BibGt9d+zZ8fNv4jjPvszRshsb/1VBBGis2fOx20fB1119/vTvGNCanxun0hpIJHapENOao1ln7W+fH0qVL4wwZ5g1jpzFtvfNE26t18cba9GjcYQ3bpWE5dKxpyBGNF759+/ZY+1HnnMbW1HxXXnmlGxM00hBmGvNT23HgwIFAtDSWqrZVnx86/J1s3LjRjaGs71D7UMf4VVdd5YaIS4iuE1quxn/Vemp/ab10rug8Dx+PWUPDaWxTDQelefWda79ou0OHeDqd4ZG871rHnzeknYaj0jUhdH2iOW68oWzChz0KH0om2v0Xvl0a/kWfq3XQd67rmoaXCh1CT+eUhlTUtmhomPBrSTTHVnznT6RjWueexorW8a/fCA0jqHWONL6rhvoKHzIyGhoyR78pkYbA8YaX1Ni3Gl9X35/2q67VocdIYjRkpJav93tjUYfStDvuuMMNG6hjVvPpuNRQfKH7PyEark9jQoeOE805wTmRlHMimnG6/Sq/nc6QYdF8T9GWBVJiyLD4ygca9k7brvNc+0y//Rre66WXXoozbns0Q4ZFu03RHjcaGlVjfus6EvpZ4UOGedvSs2fPQOnSpd3nqjys8z90mNGEysCRyhIaMrFs2bJxloHki9E/0QbowJmku4+6G6h2N0gbVBuhGlS1SdNdWL+oZlwZBMosSInanMxENWWqZVBqGZBaNByOao3Uq29mpREi1AeJarEBzgmkF2oKoExLZbk8/PDDqb06GQZtugFETZ0QqQ250qiQ9qgphtIl1UQBSC1KT1YzIKVIZ2ZKkdeNw2iHNEPGxTmB9EQdEasJhJq3IOXQphtA1NR2L6nDk+DMUTtRMkOQWtTGVwGmhghSgU1taDMz3aD0xt1G5sQ5gfRIwTYBd8qjphsAAJw2dbKomjwFGuqcSR2eAZkZ5wQAT6q26VZPuf369XO9OarHXbVFVA+SderUca9r1ZSepSEz1NOieu/UkEGVK1dOrVUGAAAAACB91HRr+J3Zs2e7zpnUuYSGcNAYexqbUl544QV79dVXXZf5ixYtcl3mawgI0rUAAAAAAOlBqtV0//vvv27sOY0jp/E1PRqvTmNBajzg0qVL2yOPPOLGqJX9+/e7cTnVs7HGXQQAAAAAIC1LtY7U/vvvPzt58qTlypUr1vTcuXPbjz/+6Nq/7Ny509V8ewoWLOgGh9dA8/EF3ermXg/PqVOn3ODuRYsWtZiYGB+3CAAAAACQWQQCAddkWpXF6nA4zQXdquWuX7++q9GuWrWqq8H+4IMPXEBdqVIlF3CLpofSc++1SIYOHWoDBw70ff0BAAAAANiyZYudc845aXPIMLXl7tSpk5199tmWNWtWu/jii+3WW2+1ZcuWJXuZGp+2V69ewedKSdewHdoRBQoUSKE1BwAAAABkZgcOHLAyZcq4CuWEpGrQfe6557rhFA4fPuxWuFSpUnbzzTdbxYoVg8Mq7Nq1y0336PlFF10U7zJz5szpHuEUcBN0AwAAAABSUmLNmNPEON3qlVyB9d69e23WrFnWunVrq1Chggu858yZE5xPgbl6MVdaOgAAAAAAaV2q1nQrwFbj8/PPP9/Wr19vjz32mFWpUsXuvvtud7egR48e9swzz7hxuRWEa0xvNVJv06ZNaq42AAAAAABpP+hWe2u1wd66dasVKVLE2rVrZ88++6xlz57dvd67d2+Xen7ffffZvn377LLLLrOZM2fG6fEcAAAAAIC0KNXG6T5TlJKuocYU4NOmGwAAIO3RMLInTpxI7dUAgFhUGawOv0831kzVmm4AAABkXqr70VCwymgEgLSoUKFCrq+xxDpLSwhBNwAgWNM0YMAAe++991whWH1o3HXXXfbUU08Ff2j0fMKECbHe16JFC9f0Jz7ly5e3P//8M870hx56yEaOHOn+Hj16tE2cONGWL19uBw8edB1r6kcOQMbmBdzFixe3PHnynFahFgBS+qbgkSNHbPfu3e556IhaSUXQDQBwnn/+eRs1apQLqqtXr25Lly51HVsqbap79+7B+a6++mobN25c8HmkYRpDLVmyxAX0nl9++cWaNWtm7du3D07Tj5qWq4f6+gCQ8em64AXcRYsWTe3VAYA4cufO7f5X4K1rVUKp5gkh6AYAOPPnz3dDNl577bXBGuoPPvjAFi9eHGs+BdlKs4pWsWLFYj1/7rnn7Nxzz7UrrrgiOE2jVch33313mlsBIL3w2nCrhhsA0irvGqVrVnKD7jQxTjcAIPU1aNDA5syZY2vXrnXPf/rpJ/vxxx+tZcuWseZTYKy7vRru8cEHH7S///476s84fvy4S1/v1KkTaaQAHK4FADL6NYqabgCA8/jjj7teOKtUqeLu5Cr1U8M43n777cF5lP7dtm1bq1Chgm3YsMGeeOIJF5QvWLAgqru/U6dOdemkahsOAACQGRB0AwCcjz/+2N5//33XoZnadK9cudKlfatDtY4dO7p5brnlluD8NWrUsJo1a7pUcdV+N2nSJNHPGDt2rAvStUwAAIDMgKAbAFKwd+9QDzzwgP3vf/+z4cOHB9ssx2fbtm3Wp08fmzFjhutUrFKlSq6zsksuucS9vmvXLvf6V1995WqKGzVqZK+99ppVrlw5xbbvsccec7XdXmCtoFq9jg8dOjQYdIerWLGinXXWWbZ+/fpEg24t6+uvv7bJkyen2DoDyJgGDhx4Rj+vf//+Uc973XXXubadkUZt+OGHH9z1WTct1X+Fmuj89ddfro8M/SY8/PDDKbzmANIDgm4ASOHevWXKlCm2cOHCqGp0NTxWw4YN7aqrrnJBtzoeW7dunRUuXDg4ZEWbNm0se/bs9tlnn1mBAgXs5ZdftqZNm9rq1astb968KbJ9CvazZInd1YdSxk+dOhXve7Zu3eradEczjIZuIqgtuNdRGwCkR507d7Z27dq5698555wT6zXvZumyZcvc9U43acuUKeM6qrzvvvvcNbVr166ptu4AUgdBNwCkcO/eqrXu1q2bzZo1K6oAU8G8CmWhw3CpzbRHAbgCeA21pWBfFPyrB3F9/j333JMi26faG7XhLlu2rPucFStWuOBenZ7JoUOHXO2TCpv6bLXp7t27t6uV11jdHtV433DDDbEKlgrctX2qMc+WLe5PjzIH9FCNuaxatcry58/v1qVIkSIpsn0AkBJatWrlbo6OHz/eZTp5dI2cNGmSvfjii8HrZmhWkPq+UKYPQTeQ+dB7OQCkYO/eCi7vvPNOl6rtBciJmTZtmqsZ0bjVqhmpVauWjRkzJvj6sWPH3P+5cuUKTlONtIbu0uenFKWr33jjjfbQQw9Z1apV7dFHH7X777/fBg8e7F5XDc3PP/9s119/vZ133nmutqd27dounTJ0rG4F40qnDKW08s2bN8cpiHrefPNNt9333nuve670TD3XvgGAtEQ3Djt06OCCbmUieRRwqxnSrbfeGvF9+/fv5yYikElR0w0AKdi7t2qtVSALTzdPyMaNG13Nda9evVxv4EuWLHHvz5Ejh6sZ1uepxrdv376ujbjSydVOXKmNO3bsSLHtU83yiBEj3COS3Llzu9r7xPzxxx9xpjVv3jxW4TSc2srrAQDpgW4gqkZ77ty5duWVV7ppyuZRJpCaHEXKlProo4/siy++SIW1BZDaqOkGgGT07r18+XLXtvull15y/4va8L3yyiuu9iMpYzqqdvziiy+2IUOGuNpdtftTja9qf0VtuZWSqBp21ZLkyZPHvv32W1fDHt4GGwDgP90MVfbT22+/7Z6raYyyfpQBFE5Ng9Q0SZ216QYkgMyH0hoAJKN3b/XsrTTynj17ut69RQWu3bt3u1pp1XbroR67H3nkEdf+Oz7qhKxatWqxpim9W+nYHqVxqzdc9Vyu2m31mqsOzNROEABw5inA/vTTT+3gwYOullvDJ15xxRWx5lFnl+rnQjdTQ9t/A8hcCLoBIIV691YQrjbPCo69h3ovV7CeUFq2ei5fs2ZNrGmq1S5XrlyceZW26PVurt7TVXsCADjzbrrpJveboOynd955x6Wch2Y5/frrr25UCjUTUlMkAJkXbboBIIV69y5atKh7hFJquHr6Pv/88+Pt3Vu15UpTVHq5CnHqDX306NHuEdpBj4JtfbZ69tZYrxpGjFRFAEgd+fLls5tvvtn1t6H+Pu66665YKeWNGzd2Izuovw6NzuDdqNW1HEDmQk03AKRQ797RCu/du06dOm5cbw3/dcEFF7jlqTOz0A7alFKumnS1I1Qna/pb8wMAUjfFfO/evS64VmaT55NPPrE9e/a4cbrVhMh76HoPIPOJCSTUnWwGoDuPSsfUMA0FChRI7dUBAACAmR09etQ2bdpkFSpUiDUkIgCkl2tVtLEm6eUAkAnEDBxoGVmgf//UXgUAAICISC8HAAAAAMAnBN0AAAAAAPiEoBsAAAAAAJ8QdAMAAAAA4BOCbgAAAAAAfELv5QBgZgMzeO/eAAAASB3UdAMAAAAA4BOCbgAAAAAAfELQDQDIFE6ePGn9+vWzChUqWO7cue3cc8+1wYMHWyAQCM4zefJka968uRUtWtRiYmJs5cqViS53zJgxdvnll1vhwoXdo2nTprZ48eJY89x1111ueaGPq6++2pftBJD2DRgwwC666KI400qUKOGuD1OnTrX0sM4AokObbgBApvD888/bqFGjbMKECVa9enVbunSp3X333VawYEHr3r27m+fw4cN22WWX2U033WT33ntvVMv97rvv7NZbb7UGDRpYrly53OcocP/111/t7LPPDs6nIHvcuHHB5zlz5vRhK4GMIeYM97MR6N8/SfPv2bPHnn76afviiy9s165d7obbhRde6KY1bNgwyZ//22+/ub5FpkyZYvXq1XPLS2seffRR69atW9QBum4cRHPjEsgMCLoBAJnC/PnzrXXr1nbttde65+XLl7cPPvggVq30nXfe6f7/448/ol7u+++/H+v5W2+9ZZ9++qnNmTPHOnToECvILlmyZApsCYDU1q5dOzt+/Li7iVexYkUXeOuc//vvv5O1vA0bNrj/dY1STXdalC9fPvcAkHSklwMAMgXVRKtQvHbtWvf8p59+sh9//NFatmyZop9z5MgRO3HihBUpUiROjXjx4sXt/PPPtwcffDDZhXMAqWvfvn32ww8/uKyWq666ysqVK2eXXnqp9e3b166//vrgPPfcc48VK1bMChQoYI0bN3bXnPhqha+77jr3d5YsWRIMuqdPn2516tRxWTVnnXWW3XDDDcHX9u7d6270qZY8T5487tq2bt264Ovjx4+3QoUK2axZs6xq1aougFYGzo4dO2Jdp7QtefPmdfOq1v7PP/+MmF4e37z6HNXaa3u95jSaFs1+8T7j3XffdTdGlYl0yy232MGDB4PznDp1yl544QWrVKmSu5lZtmxZe/bZZ91rWl7Xrl3jZCXkyJHDXf+B1ELQDQDIFB5//HFXeKtSpYplz57datWqZT169LDbb789RT+nT58+Vrp0ade226OC7TvvvOMKfSqoz5071xWI1c4cQPri1fgqffrYsWMR52nfvr3t3r3bZsyYYcuWLbOLL77YmjRpYv/880/EtG2v6YkC4NAgOJRS2RVkX3PNNbZixQp3PVHQG9p3hJrNTJs2zRYsWOD6q9C8ugkYelPwpZdeckHt999/b5s3b3afL//995+1adPGrrjiCvv555/dMu67776INwESmvfmm2+2Rx55xDXj8bZH06LdL6r11779/PPP3UPXy+eeey74um5u6Ln66Fi9erVNnDjRtYUXBfR6Hvq9vPfee66pjwJyILWQXg4AyBQ+/vhjlwquApkKg2prqKBbAXLHjh1T5DNUEPzwww9dDZBqojwK9j01atSwmjVruo7cNJ8KnADSj2zZsrmaW/X78Oabb7rAUcGnznOd28qgUbMVBZde3w0KdBVIfvLJJy44DaUAXjXFklATFNXm6jNUi+xRO3JRjbaC7Xnz5rmsHtH1rkyZMu5zFeyKAnCts64/olrhQYMGub8PHDhg+/fvt1atWgVfV414JInNq23Sfgrdnmj3i2qytX/z588fbPajGwzaftV4v/LKK/b6668Hr9v6fPXFIW3btnXb9Nlnn7m+OUTL8jqzBFILNd0AgEzhscceC9Z2K/BVQa5nz542dOjQFFm+Co8Kur/66itX8E6I2oAqNXT9+vUp8tkAznyb7u3bt7tAV5ksuoGm4FsBntKlDx065EZB8GrF9di0aVOw7XZiQt/3wAMPuGm6URjfTTp1xKYgt27dusFp+nw1Z9FrHqWde0GylCpVygXBoiYxCk5btGjh0t0V3MZX656UeT3R7hellXsBd/g6altUix3fftDNTl3b3377bfd8+fLl9ssvv7h1BVITNd0AgExBaZVqLxkqa9asrlbldKl9oWph1FbykksuSXT+rVu3ujbdKkwCSJ8U4DVr1sw9lOqs1Ob+/fvbQw895M5tBeLhvBrtxIT2+q22z6KhDk+XmtaEUu1v6LCJSnPXaA4zZ860jz76yJ566imbPXu261E9XFLmFQXc0eyXSOvoXaej2Qf6HtQuXNdZraPSytXuHkhN1HQDADIF1cYoMFa7SPVOrqF5Xn755VgdEaldoQq7aicoa9ascc937twZnEcdFalNoUdttFXgVs2Kamg0rx4qYIr+Vy37woUL3ecqTVI9FKsTINUSAcgYqlWr5oYdVI23rgGqedZ5HvpQhks0Qt+jDhhFGTTxdQam1G61s160aFFwmm7s6Rqm9UoK9Xeha5xGfLjgggtck5ykzquOy8L7rEiJ/VK5cmUXeCfUKZoymXTzc8yYMW59OnXqFPW2A34h6AYAZAqvvfaa3Xjjja4WSgVUdR50//332+DBg4PzKFVUhUhvWDGlouu52kB61PFQaBqlxv7W0EFatmpxvIfSzb3adHU0pF6NzzvvPOvcubPVrl3b9X7MWN1A+qNgVrWn6qBL57bSoydNmuQyXnRDTZ0o1q9f33U0puYmutmmoPTJJ590HZ0ll2rRNcyh/lea9apVq9xNPy8Y1WernbnaTiuV+4477nAdiGl6NLQdCqDVKZp6Ide6q614pHbdic2rG5CaRzct//rrL5cSnhL7RdkF6qyyd+/ernNKpaXrhubYsWPj1HaruY9q8UNvrAKphfRyAECmoDaCI0aMcI/4qN1fYm3/wlMjExvTW7UySjsHkDGoHbLaTg8fPtwFfeqcTB2WKeB94oknXDr0l19+6YLJu+++2w1ZpQ7FGjVqFOxlOzmuvPJKF9zrRqECSqWda5kepVI//PDDrnMz3QjUa1qP8HTt+Ki99++//+7GHveav3Tp0sXdnEzqvGrzPnnyZDekmoYJ07rp2poS+0WZRaotf/rpp127en221+7dc+utt7qOMvV/aKeWQGqJCYQ25MiA1LuixvhTD4temxgACBfaG2xGNMAytkD//qm9CgCS6OjRo642tEKFCgRGSFG6GaoO45YsWeLS2gG/rlXRxprUdAMAAABI95R1oJp3deqmDt0IuJFW0KYbAAAAQLqnccqVbq4a7tC+OIDURk03AAAAgHRP7d4zeMtZpFPUdAMAAAAA4BOCbgAAAAAAfEJ6OQAg3Wv80GbLqL55o2xqrwIAADgN1HQDAAAAAOATgm4AAAAAADJi0H3y5Enr16+fG2g8d+7cbhD7wYMHx+p1UH8//fTTrvt/zdO0aVNbt25daq42AAAAAABpP+h+/vnnbdSoUfb666/bb7/95p6/8MIL9tprrwXn0fNXX33VjbW3aNEiy5s3r7Vo0cKOHj2amqsOAAAAJNuAAQPsoosuijOtRIkSFhMTY1OnTrX0sM5Iu870MTZ69GgrU6aMZcmSxUaMGHHGjpeYNHq+pJmO1ObPn2+tW7e2a6+91j0vX768ffDBB7Z48eJgLbe+sKeeesrNJ++88447ULRjb7nlltRcfQAAAGSAzhGT2mHhnj17XCbmF198Ybt27bLChQvbhRde6KY1bNgwWeugCqiBAwfalClTrF69em6Zac2jjz5q3bp1i2peBVwqr69cudIygk8//dRVDK5YscJl61asWNFuvPFG69q1qxUpUiTB93733Xd21VVXJTjPt99+68YZ95Ofx9iBAwfcvnj55ZetXbt2VrBgQVd5mpIGxHNM7dixI02eL2mmprtBgwY2Z84cW7t2rXv+008/2Y8//mgtW7Z0zzdt2mQ7d+50KeUefYF169a1BQsWpNp6AwAAIPNSUKHga8KECa4cO23aNBcw/f3338le5oYNG9z/qmgqWbKk5cyZ09KafPnyWdGiRS2jUcWfAuP4PPnkk3bzzTdbnTp1bMaMGfbLL7/YsGHDXOzy7rvvRhXzKDD0HjfddJNdffXVsaZpHr8l5xg7fvx4VMvevHmznThxwlWmqllwnjx57EwpmUbPlzQTdD/++OOutrpKlSqWPXt2q1WrlvXo0cNuv/1297oCblHNdig9914Ld+zYMXenJfQBAAAApIR9+/bZDz/84JpFqvayXLlydumll1rfvn3t+uuvjzXfPffcY8WKFbMCBQpY48aNXZAWXw3edddd5/5Waq7SZeMzffp0F/zlypXLzjrrLLvhhhuCr+3du9c6dOjgav0U9KgiK7QvpPHjx1uhQoVs1qxZVrVqVRdEe8GfR8GntkdNOjWvau7//PPP4HqGpgvHN68+RzWq2l5tix6aFs1+8T5DwayCYVW4KV44ePBgcJ5Tp065WtRKlSq5YKts2bL27LPPute0PNW4hmcm5MiRw1X2JZUycIcMGeKC7BdffNEFx1qvZs2audrvjh07BudVs1n1UaXPOv/884MBuZ4rMPQe6qdK6x06TfNECni1LQpi9X3rWBs6dKivx5i3/9966y3X75Y+N7HP0ndbo0YN97cyALTsP/74I+Ly33rrLXfsabmKAd94441Yr2/dutVuvfVWlz2g4+qSSy5xTYwTOqbC08tXrVrl1k/7WTeJ7rvvPjt06FDw9bvuusvatGljL730ktu3mqdLly7upkGGDLo//vhje//9923ixIm2fPlyd7dQG6//k0sHok5O76F2BQAAAEBKUKCqhwr5quyJT/v27W337t2uZnTZsmV28cUXW5MmTeyff/6JmLY9btw497dX8xmJ0tkVZF9zzTWupl1BpILe0GBi6dKlruZdWaFqqql5Q4OJI0eOuPK2AsLvv//e1VDq8+W///5zwcgV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bcKECfbjjz9aixYtLDVuKnTq1Mnatm0b9U2FXbt2uZsKlSpVsh07dtipU6eCrx85csQqVqxo7du3t549e1pqSs72iW6WFChQIPi8ePHiwb/37t1rDRs2tKuuuspmzJhhxYoVs3Xr1lnhwoVTfP3TI4JuAAAAAL6ZNm2aSx1/4YUXXMq40sevv/56Gzx4sKsRDRcIBOybb75xQd7zzz+fIW4q1KlTxz3k8ccft9SU1O0LDbKV/h+JvqcyZcrYuHHjgtMqVKhwWuuZkZBeDgAAAMA3CkZVY/3LL7/YlClTXGr1J598Yg899FCs+fbv32/58uWzHDly2LXXXmuvvfaaNWvWzNLTTYWzzz7bzjvvPHv00Uft33//tYxE7exLlSrlvpN58+ZF3AeqyVdwXqtWLRszZkyqrWtaQ003AAAAAN8ozVptgN9//30rWLCgm/byyy/bjTfeaG+88Uawtjt//vy2cuVKO3TokGv/3atXL5eSHZ56nlZvKuTKlcvdVPjrr7/cDYW///47Vs1veqVA+80333RBtdquv/XWW+47WbRokV188cXBfTBq1Cj3nT3xxBO2ZMkS6969u7uB0rFjR8vsqOkGAABIo9RRldJUVZivW7euLV68OMH59+3bZ126dHGFZHXmpBq3L7/88rQ6iAJOl45H1QB7AbdUrVrVpZFv3bo1OC1LliyuPbRqVB955BEXlA8dOtTS002FSy+91K655hp3U0Ft0jNCbbc6vLv//vutdu3a1qBBA9dBnP4fPnx4rH2gAHzIkCGulvu+++6ze++91wXrIOgGAACZJCgdP358nN539b5Q6gjprrvuckFpnjx57Oqrr3adAaWGjz76yNUa9e/f35YvX+46PlKHUrt37444//Hjx13a5x9//OFSd9UeVumdCnZOp9fp9PT9yW+//ebaCyvAU9thtaPdvHmzz1uChKiDre3bt7sabM/atWtdkH3OOefE+z4FcqpZzSg3FTIS3VxYv359rH1QrVq1WPNoH3Du/R+CbgAAkC4lNSgV9byrXoW9x59//hl8TQXkNm3auDTJzz77zFasWOGG/2natKkLVs801ZSppkjDJqkwqxoj3QgIHYYolKb/888/rvZaQY6C2SuuuMLtF486T3rmmWfshhtusIz2/cmGDRvssssusypVqrhhjjT0VL9+/SIG50g+Bc9KA9dDNm3a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",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Categories\n",
    "categories = [\"faithfulness_correct\", \"relevance_correct\", \"faithfulness\", \"relevance\"]\n",
    "\n",
    "# Scores for each method\n",
    "v2_reproduced = get_eval_metrics(\"Snowflake100+Routing+Prune+Rerank_reproduced_2/testset-50q-eval.jsonl\")\n",
    "v3 = get_eval_metrics(\"Snowflake100+Routing+Prune+Rerank+Self-consistency/testset-50q-eval.jsonl\")\n",
    "v4 = get_eval_metrics(\"Snowflake100+Routing+Prune+Rerank+Self-consistency+CoT self-reflection/testset-50q-eval.jsonl\")\n",
    "\n",
    "x = np.arange(len(categories))  # label locations\n",
    "width = 0.25\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(10, 6))\n",
    "rects1 = ax.bar(x - width, v2_reproduced, width, label=\"V2\", color=\"gray\")\n",
    "rects2 = ax.bar(x, v3, width, label=\"Self-consistency\", color=\"teal\")\n",
    "rects3 = ax.bar(x + width, v4, width, label=\"Self-consistency+CoT self-reflection\", color=\"royalblue\")\n",
    "\n",
    "# Labels and title\n",
    "ax.set_ylabel(\"Score / Percentage\")\n",
    "ax.set_title(\"Comparison: V2 (Reproduced) vs Self-consistency vs V5 (Self-consistency+CoT self-reflection)\")\n",
    "ax.set_xticks(x)\n",
    "ax.set_xticklabels(categories)\n",
    "ax.legend()\n",
    "\n",
    "\n",
    "# Add labels\n",
    "def add_labels(rects):\n",
    "    for rect in rects:\n",
    "        height = rect.get_height()\n",
    "        ax.annotate(\n",
    "            f\"{height:.2f}\",\n",
    "            xy=(rect.get_x() + rect.get_width() / 2, height),\n",
    "            xytext=(0, 3),\n",
    "            textcoords=\"offset points\",\n",
    "            ha=\"center\",\n",
    "            va=\"bottom\",\n",
    "        )\n",
    "\n",
    "\n",
    "add_labels(rects1)\n",
    "add_labels(rects2)\n",
    "add_labels(rects3)\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "liverag_env",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
